package com.vv.tools.common.util;

import java.io.StringWriter;

import lombok.extern.slf4j.Slf4j;

import freemarker.cache.StringTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateExceptionHandler;

/**
 * @author liwen
 * freemarker 工具类
 */
@Slf4j
public class FreemarkerUtil {

    private FreemarkerUtil() {
    }

    public static String parse(String template, Object root) {
        try {
            // 创建一个合适的配置对象
            Configuration cfg = new Configuration(Configuration.VERSION_2_3_32);
            cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
            StringTemplateLoader templateLoader = new StringTemplateLoader();
            templateLoader.putTemplate("FTL", template, System.currentTimeMillis());
            cfg.setTemplateLoader(templateLoader);
            // 获取模板对象
            Template temp = cfg.getTemplate("FTL");
            // 合并模板和数据模型
            StringWriter out = new StringWriter();
            temp.process(root, out);
            // 输出结果
            return out.toString();
        } catch (Exception e) {
            log.error(e.getMessage());
            return e.getMessage();
        }
    }

}
